QuickSight と別リージョンの EC2(MySQL) を接続してみた
今回は、クロスリージョンの EC2(MySQL) をソースとして QuickSight 接続を行ってみました。
構成は以下です。
- 東京と大阪を VPC ピアリングでつなぐ。
- 大阪のパブリックサブネットにある EC2(MySQL) をデータソースとする。
※今回行うのは、以下ブログのクロスリージョン版です。似たような手順が多いため、適宜こちらのブログもご参照ください。
VPC の作成
- 東京リージョンのVPCの IPv4 CIDR
- sunagawa-vpc
- 10.0.0.0/16
- 大阪リージョンのVPCの IPv4 CIDR
- sunagawa-osaka-vpc
- 172.16.0.0/16
EC2 作成 in 大阪リージョン
以下構成で作成しました。
- AmazonLinux 2023
- パブリック IP あり
- パブリックサブネットへ配置
パブリックサブネットへ配置した理由は、ローカルから ssh で直接ログインするためです。一方、プライベートサブネットに EC2 を配置しても今回の QuickSight からの接続は同様に行えると思いますので、任意に設定ください。
※プライベートサブネットに EC2 を配置する場合は、次項の「EC2 に MySQL をインストール」の際に MySQL パッケージをインターネット上からダウンロードできるよう、NAT などを用いて EC2 → インターネットの動線を確保しておいてください。
EC2 に MySQL をインストール
以下ブログの「EC2 に MySQL をインストール」の手順を実施します。
上記ブログに従い、以下の3つの作業を実施してください。
- MySQL のインストール/ログイン
- QuickSight から MySQL へ接続するための MySQL サンプルユーザーの作成
- 適当なデータベースとテーブルの作成
VPC ピアリングの作成
「VPC コンソール → ピアリング接続 → ピアリング接続を作成」から VPC ピアリングを作成します。大阪リージョンからの作成でもいいかもしれませんが、今回は東京リージョンのコンソールから作成します。
ローカル VPC に東京リージョンの VPC、もう一方の VPC に大阪リージョンの VPC ID を記載し、「ピアリング接続を作成」します。
上記完了しても、まだピアリング接続はできていません。大阪リージョン側でこのピアリング作成の承認を行う必要があるため、大阪リージョンの「VPCコンソール → ピアリング接続」のアクションタブより「リクエストを承諾」します。
その後、大阪リージョンのピアリング接続の DNS タブより、右上のDNS設定を編集を選択。
「アクセプタ DNS 解決」の欄にチェックを入れて「変更を保存」します。
以下のように有効化されているか確認します。
東京リージョン側のピアリング接続でもリクエスタ(東京)→アクセプタ(大阪)が “有効” になっていることを確認します。
東京リージョンのプライベートサブネット(1a, 1c)のルートテーブルに大阪 VPC へのルートを追加します。この 1a, 1c に後ほど QuickSight ENI を作成します。送信先およびターゲットは以下です。
- 送信先:172.16.0.0/16 (大阪リージョン VPC の CIDR)
- ターゲット:ピアリング接続 ID
1a
1c
大阪リージョンの EC2 を立てているパブリックサブネットのルートテーブルに東京 VPC へのルートを追加します。
- 送信先:10.0.0.0/16(東京リージョン VPC の CIDR)
- ターゲット:ピアリング接続 ID
QuickSight ENI 用 のセキュリティグループ作成
東京リージョンに QuickSight 用のセキュリティグループを作成し、大阪リージョンのVPCからの接続を許可します。
本当は、大阪リージョンの EC2 のセキュリティグループからのインバウンドを許可としたいのですが、以下ブログにある通り設定できません。
なので、以下のように設定します。
-
インバウンド
- タイプ:すべてのTCP
- プロトコル:TCP
- ポート範囲:0-65535
- ソース:172.16.0.0/16 (大阪リージョンの VPC CIDR)
-
アウトバウンド
- タイプ:すべてのトラフィック
- プロトコル:すべて
- ポート範囲:すべて
- 送信先:0.0.0.0/0
大阪リージョン EC2 用 セキュリティグループ設定
大阪リージョンの EC2 にアタッチしたセキュリティグループのインバウンド/アウトバウンド ルールを以下のように設定します。ssh 用のルールも設定していますが、これはローカルから EC2 にアクセスするためのものです。
- インバウンド
- タイプ:すべてのTCP
- プロトコル:TCP
- ポート範囲:0-65535
- ソース: 10.0.0.0/16 (東京リージョンの VPC CIDR)
- アウトバウンド
- タイプ:すべてのトラフィック
- プロトコル:すべて
- ポート範囲:すべて
- 送信先:0.0.0.0/0
QuickSight 実行ロールの作成
以下の設定でロールを作成します。詳細は公式ドキュメントをご参照ください。
カスタム信頼ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "quicksight.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
許可ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:CreateNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:DeleteNetworkInterface",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups"
],
"Resource": "*"
}
]
}
QuickSight アカウント設定メニューからVPC接続定義を作成
QuickSight ホーム画面 → 右上プロフィールアイコン → QuickSight を管理 → VPC 接続の管理 → VPC接続の追加 の順に選択します。その後以下のように設定し、画像下側の "追加" ボタンを選択。
- VPC接続名:<任意の名前>
- VPC ID:作成した東京リージョンの VPC ID
- 実行ロール:前述の実行ロールを指定
- サブネット:1a と 1c のプライベートサブネットを指定
- セキュリティグループID:前述で作成済みの QuickSight アクセス用のセキュリティグループ ID
VPC 接続が作成されます。以下のようにステータスが AVAILABLE になれば OK です。
ENI も2つ作成されます。(EC2コンソールから確認できます)
QuickSight データセットの作成
右上の "新しいデータセット" を選択します。
データセットの中から「MySQL」を選択します。
データソースの設定は以下のようにします。ポイントはデータベースサーバーとして大阪リージョン EC2 のプライベート IP を指定する部分です。
- データソース名:<任意の名前>
- 接続タイプ:先ほど作成した VPC 接続を選択
- データベースサーバー:<大阪リージョン EC2 のプライベート IP>
- ポート:3306
- データベース名:前述の項で作成したデータベース名
- ユーザー名:前述した QuickSight 接続用に作成したユーザー名
- パスワード:MySQL ログイン時のパスワード
- SSL の有効化:チェックを外す
完成形が以下画像です。画像左下のボタンは "接続を検証" するボタンなので、ボタンを押下して以下画像のように "検証済み" と表示されることを確認してください。確認できたら、右下の "データソースを作成" を選択します。あとは接続した MySQL データを使って、可視化してみてください。これで別リージョンの EC2(MySQL) に繋げることができました。
終わりに
今回は QuickSight と別リージョンの EC2(MySQL) を繋げてみました。
ピアリングの使い方が実践的に分かったので面白かったです。
本記事がどなたかのお役に立てば幸いです。
参考文献